home *** CD-ROM | disk | FTP | other *** search
/ Collection of Internet / Collection of Internet.iso / infosrvr / dev / www_talk.930 / 000537_dsr@hplb.hpl.hp.com _Mon Jan 11 16:26:35 1993.msg < prev    next >
Internet Message Format  |  1994-01-24  |  15KB

  1. Return-Path: <dsr@hplb.hpl.hp.com>
  2. Received: from dxmint.cern.ch by  nxoc01.cern.ch  (NeXT-1.0 (From Sendmail 5.52)/NeXT-2.0)
  3.     id AA14999; Mon, 11 Jan 93 16:26:35 MET
  4. Received: by dxmint.cern.ch (5.65/DEC-Ultrix/4.3)
  5.     id AA28423; Mon, 11 Jan 1993 16:41:37 +0100
  6. Received: from dragget.hpl.hp.com by hplb.hpl.hp.com; Mon, 11 Jan 93 15:38:22 GMT
  7. Received: by manuel.hpl.hp.com
  8.     (16.6/15.6+ISC) id AA23888; Mon, 11 Jan 93 15:42:44 GMT
  9. From: Dave_Raggett <dsr@hplb.hpl.hp.com>
  10. Message-Id: <9301111542.AA23888@manuel.hpl.hp.com>
  11. Subject: Re HTTP2: caching and copyright
  12. To: www-talk@nxoc01.cern.ch
  13. Date: Mon, 11 Jan 93 15:42:41 GMT
  14. Cc: dsr@hplb.hpl.hp.com
  15. Mailer: Elm [revision: 66.25]
  16.  
  17. These are comments on Tim's responses to my recent message on HTTP2.
  18.  
  19. >>   o   the "Expires:" field is optional
  20.  
  21. > agreed.
  22.  
  23. >>   o   the date values should be in a prescribed format to simplify
  24. >>       machine interpretation (Is this adequately defined by existing RFCs?)
  25.  
  26. > agreed. yes it is, in RFC850
  27.  
  28. RFC977 provides a tighter definition for date/time restricting it to the time
  29. zone of the server or GMT. I would like us to restrict it to GMT period - as
  30. otherwise how can you in general find out the time zone of the server?
  31.  
  32.     NEWGROUPS date time [GMT] [<distribution>]
  33.  
  34.     The date is sent as 6 digits in the format YYMMDD, where YY is the last
  35.     two digits of the year, MM is the two digits of the month, (with leading
  36.     zero, if appropriate), and DD is the day of the month (with leading zero,
  37.     if appropriate). The closest century is assumed as part of the year, i.e.
  38.     86 specifies 1986, 30 specifies 2030, 99 is 1999, 00 is 2000).
  39.  
  40.     Time must also be specified. It must be as 6 digits HHMMSS with HH being
  41.     hours in the 24-hour clock, MM minutes 00-59, and SS seconds 00-59.
  42.     The time is assumed to be in the server's time zone unless the token "GMT"
  43.     appears, in which case both time and date are evaluated at the 0 meridian.
  44.     
  45. RFC850 mentions that not all time zones have well known abbreviations,
  46. making it difficult to carry out date/time arithmetic. Furthermore, Kevin
  47. Hoadley's comment:
  48.  
  49.           This also depends on hosts agreeing on the date. To quote
  50.       RFC1128, talking about a 1988 survey of the time/date on
  51.       Internet hosts, "... a few had errors as much as two years"
  52.  
  53. suggests we will have problems with servers in this regard.
  54. One solution would be for the server to send a field with each document:
  55.  
  56.         KeepFor: nnnn seconds | mmm days
  57.  
  58. The cache management software then notes the date/time received and works
  59. out for itself the expiry date/time. This method has the great advantage of
  60. avoiding all need for date/time conversion, and any reliance on the server's
  61. having their clocks setup correctly.
  62.  
  63.  
  64. >> I think that we need to provide an operation in which the server returns a
  65. >> document only if it is later that a date/time supplied with  the request. If
  66. >> it is the same (or earlier) the server should return a suitable status code
  67. >> and an optional "Cost:" header, see below.
  68.  
  69. > Need to look at NNTP here.  We end up getting very close indeed to it.
  70. > I would want the functionalty of this search to map onto the NEWNEWS
  71. > very nicely.  A newsgroup is just a hypertext list anyway.
  72.  
  73. I like the NEWNEWS command, but feel we should keep the GET & SINCE command.
  74. The latter allow you to refresh a cached document with one exchange whereas
  75. you need two when using NEWNEWS and a subsequent GET.
  76.  
  77. The NEWNEWS command is intended for finding new basenotes and responses,
  78. and should be contrasted with the NEWGROUPS command.
  79.  
  80. >> Note that servers shouln't cache documents with restricted readership since
  81. >> each server don't know the restrictions to apply. This requires a further
  82. >> header to identify such documents as being unsuitable for general caching:
  83. >> 
  84. >>     Distribution: restricted | unrestricted
  85.  
  86. > Good point.  Not the the distribution of other messages is in the form of
  87. > To: and Cc: and Newsgroup: and in fact Distribution:.  (See  
  88. > http://info.cern.ch/hypertext/WWW/Protocols/rfc850/rfc850.html#z12)
  89. > So you'll need a new fieldname.  If we could only merge the functionality of  
  90. > these systems in some cool way, it would be grand.
  91.  
  92. I don't understand the description of "Distribution: nj.all" in RFC850
  93. (section 2.2.8). It is unclear what its argument is. Is it a geographical
  94. hierarchy or is it some kind of newsgroup name with the "all" wildcard?
  95.  
  96. It would be nice in some circumstances to define the readership groups for
  97. situations where a server could apply group membership information to restrict
  98. readership. This field would be supplied by the author. This idea is I believe
  99. in the same spirit as RFC850. Consider the following example:
  100.  
  101.     Distribution: incl.kbpd psl.all
  102.  
  103. This says that the document can be given to anyone in psl and anyone in the
  104. kbpd subgroup of incl. You can make these names correspond to your
  105. organisation. The maintenance of these readership groups is outside the scope
  106. of the HTTP2 protocol. Local servers shouldn't cache documents including this
  107. header unless they "understand" the specified readership groups and can apply
  108. the same membership tests. This involves sharing the same definitions across a
  109. group of servers, for instance within a campus or a company.
  110.  
  111. >> I would like the document header to include an optional cost header, e.g.
  112. >>
  113. >>      Cost: 4.05 US DOLLARS
  114. >>      Copyright: Reuters Inc.
  115.  
  116. > I note here that both the copyright holder and the account for charging are 
  117. > items in some address space, and we ought to be as flexible with these
  118. > address spaces as with the udi.  So I would propose something like
  119. >
  120. >    ChargeTo:  HPInternal:/8126/148689  upto $2.00
  121. >    
  122. > would be better.  But how does this fit in with authentication?  Once you
  123. > are authenticated, your prefered method of paying will be known.  You can't
  124. > have charging without authentication!
  125.  
  126. Four points:
  127.  
  128. First, it certainly isn't the case that once you are authenticated
  129. then the way of charging you is known. For example consider members of
  130. the public wishing to pay for information using a credit card number for a
  131. service they have never before accessed. In HP it may in some cases be
  132. sufficient to check that the client's internet address starts with the
  133. company's subnet code. However, the server still needs the employee
  134. name, number and location code to cross charge.
  135.  
  136. Second, I don't think the "upto" concept is needed. In the vast majority of
  137. cases a fixed cost will suffice. A point to watch when keeping documents in
  138. local caches, is that this cost may change from time to time. This
  139. corresponds to pricing of normal goods, and I believe can be adequately
  140. handled by appropriately setting the "KeepFor" or "Expires" field.
  141.  
  142. Third, for legal purposes it is still necesary to tag documents with who owns
  143. the copyright, as in books, music and other products. For this reason we
  144. should include the "Copyright:".
  145.  
  146. Fourth, I like the idea of a universal scheme for naming the copyright owner
  147. and charging method, but feel that this will take some time to take effect.
  148. For the moment I would like to stick to the following:
  149.  
  150.     Cost: 4.05 US DOLLARS
  151.     Copyright: 1988 Time International Inc.
  152.     ChargeTo: HP/8126/148689
  153.  
  154. Where the meaning of the "CopyRight:" and "ChargeTo:" fields is outside the
  155. scope of the HTTP2 protocol specification. The "Cost:" field always starts
  156. with the amount and should be followed by the currency name.
  157.  
  158. The requesting GET could include an optional header:
  159.  
  160.     CostingUpTo:  2.50 US DOLLARS
  161.  
  162. This would result in the server returning an error message if this was less
  163. than the cost of the requested document, and introduces issues of how
  164. to recognising currency type and performing currency conversion. Users should
  165. be able to see how much they will have to pay on preceding hypertext pages
  166. (as supplied by the server).
  167.  
  168. > A simple thing in the first instance is to say that it illegal to cache
  169. > a for-pay document unless you have a privat earrangement with the owner
  170. > about refunding him.  This could be done using a completely separate billing
  171. > process.
  172.  
  173. No. You can only get copies of documents for which the server recognises that
  174. there is an effective arrangement for making the payment. However, if this is
  175. the case, then caching presents no problems, provided the authetication and
  176. ChargeTo information is preserved and supplied to the server with the GOT
  177. command.
  178.  
  179. I will try and lay my hands on a copy of "Litterary Machines".
  180.  
  181. >> The protocol ought to allow for multiple GOT statements (and associated
  182. >> headers in the same message. For this it seems simple enough to require a
  183. >> terminating blank line.
  184.  
  185. > Hey, that;s not something you do for one method, it's a change to the whole 
  186. >  protocol to introduce pipelining.
  187.  
  188. Oh dear! It seems a waste to have to set up a connection for each such
  189. request. Perhaps the safest thing is to allow multiple Udi's with the GOT
  190. command, all of which must be for the same client. What limits are there on
  191. line length for headers or is there a mechanism for continuing arguments on
  192. subsequent lines? This would still be effective in limiting network traffic,
  193. and processing time.
  194.  
  195. >>  Effective support for discussion groups
  196.  
  197. >> My model is that discussion groups each have unique Udi's. Each discussion
  198. >> group has a sequence of base notes, and each base note is associated with a
  199. >> sequence of responses. I am unsure of how to deal with cross postings!
  200.  
  201. > I agree that the POST method is well defined as a method of the
  202. > newsgroup class which takes an article as a parameter. In fact, as you say,
  203. > cross-posting makes a mess of this, as it involved many groups in one atomic 
  204. >  operation.  This is a peculiarity of news which makes it difficult to map
  205. > onto the object model.  Any ideas?
  206.  
  207. The NNTP protocol employs the POST command to post an article, and relies
  208. on the document's header to specify the news groups for posting to with the
  209. Newsgroups header. The "References:" header is used to link a response to any
  210. articles prompting submission of this article.
  211.  
  212. Thus each article can be posted to multiple groups, and can have zero or more
  213. references to preceding articles. For convergence between NNTP and HTTP2 we
  214. need to clarify the mapping of groups and references.
  215.  
  216. News groups as currently defined are hierarchical name spaces without
  217. reference to a server or filing system. The WWW model currently ties
  218. documents to both of these. I would like to be able to post responses as
  219. WWW documents which refer to one (or more?) existing documents. We can already
  220. do this. What we can't do is to find what documents reference a given
  221. document. This is hard in principle and practice since the various documents
  222. can be on different machines scattered over the entire world.
  223.  
  224. The answer is to provide a mechanism which allows servers to track which Udi's
  225. should be recorded as being "responses" to other Udi's.
  226.  
  227. What is the analogous concept to news group?
  228.  
  229. These are lists of articles, and not articles as such. The GROUP command in
  230. NNTP allows you to identify articles in given groups. The LIST command returns
  231. the complete list of groups known to the server, while the NEWGROUPS command
  232. returns groups created since a specified date/time, and matching on specified
  233. distribution categories.
  234.  
  235. I think that in WWW we should treat groups as named documents which are
  236. generated by the server from the database of postings stored under that name.
  237. The important thing is to distinguish between the Udi's of references and
  238. those of news groups.
  239.  
  240. Given these ideas I will now present my suggestions for the POST command:
  241.  
  242. The document header supplied with the POST command has the following fields:
  243.  
  244.     Newsgroups:  <followed by one or more Udi's>        /* optional */
  245.     References:  <followed by one or more Udi's>        /* optional */
  246.  
  247. Followed by one of the following:
  248.  
  249.     DocumentName: Udi       /* for an existing document - body is void */
  250.     NewDocument:            /* for new document, contents follow as body */
  251.  
  252. The semantics are the same as for NNTP, except that the Newsgroups header is
  253. optional. In otherwords you can post responses to any WWW document - it
  254. doesn't need to be in a news group. The server should return the Udi of the
  255. document if successful (note that the NNTP POST command doesn't bother with
  256. this).
  257.  
  258. We can include support for ARTICLE, BODY, HEAD, LIST and NEWGROUPS commands in
  259. a way very similar to NNTP. The GROUP command in NNTP returns the first and
  260. last article number in the group. This is unlikely to be what we want - as it
  261. depends of the special naming scheme used for network news articles. We are
  262. probably more interested in getting a list of article names in the group. In
  263. my earlier message I suggested that this could best be achieved using the GET
  264. command in conjunction with SINCE and BEFORE parameters (to allow for really
  265. humungous groups with thousands of base notes). The server is responsible for
  266. interpreting this command with the appropriate database query.
  267.  
  268. A really useful command missing from NNTP is the ability to list the responses
  269. to a given document, i.e. the command names a given document/article, and is
  270. returned with the list of Udi's for documents which were posted with that
  271. article as part of their references. It would be great if this list was sent
  272. by the server along with the base document, as a separate part in a multipart
  273. message.
  274.  
  275. Finally, I want to draw attention to post-it style annotations. It would be
  276. really nice to be able to post a note at a particular point within a given
  277. document. The browser would show such annotations as little post-it symbols
  278. which you click to see their contents. This requires similar mechanisms to
  279. that for discussion groups. Perhaps we could have an ANNOTATE command:
  280.  
  281.     ANNOTATE   Udi  /* including an anchor for positioning the annotation */
  282.  
  283.    (body follows)
  284.  
  285. Authors place anchors in documents to suit their own needs and not the
  286. unforeseen needs of others. It is therefore necessary to general the anchor
  287. syntax in document Udi's to support a more flexible scheme based on pattern
  288. matching. Servers should send the document along with the list of annotations.
  289.  
  290. Comments please.
  291.  
  292. Best wishes and sorry for such a long response,
  293.  
  294. Dave Raggett
  295.